// WebSocket mock服务器，用于提供实时健康数据
class MockWebSocketServer {
  constructor() {
    this.connections = new Map();
    this.mockDataInterval = null;
  }

  // 启动mock服务器
  start() {
    console.log('Mock WebSocket服务器已启动');
    this.startSendingMockData();
  }

  // 添加连接
  addConnection(customerId, ws) {
    this.connections.set(customerId, ws);
    console.log(`客户 ${customerId} 已连接`);
  }

  // 移除连接
  removeConnection(customerId) {
    this.connections.delete(customerId);
    console.log(`客户 ${customerId} 已断开连接`);
  }

  // 开始发送mock数据
  startSendingMockData() {
    this.mockDataInterval = setInterval(() => {
      // 为每个连接的客户发送数据
      this.connections.forEach((ws, customerId) => {
        if (ws.readyState === WebSocket.OPEN) {
          // 发送健康指标数据
          const healthData = this.generateHealthData();
          ws.send(JSON.stringify({
            type: 'healthData',
            ...healthData
          }));

          // 每隔一定时间发送图表数据
          if (Math.random() > 0.7) {
            const chartData = this.generateChartData();
            ws.send(JSON.stringify({
              type: 'chartData',
              ...chartData
            }));
          }
        }
      });
    }, 1000); // 每秒发送一次数据
  }

  // 生成健康指标数据
  generateHealthData() {
    return {
      heartRate: this.getRandomValue(60, 100),
      oxygen: this.getRandomValue(95, 100),
      breathRate: this.getRandomValue(12, 20),
      glucose: this.getRandomValue(3.9, 6.1),
      systolic: this.getRandomValue(110, 140),
      diastolic: this.getRandomValue(70, 90)
    };
  }

  // 生成图表数据
  generateChartData() {
    const dataLength = 1201;
    const mb = [];
    const jy = [];
    const xData = [];

    // 生成模拟数据
    for (let i = 0; i < dataLength; i++) {
      mb.push(this.getRandomValue(500, 1500));
      jy.push(this.getRandomValue(8000, 12000));
      xData.push((0.005 * i).toFixed(3) + 's');
    }

    return {
      mb,
      jy,
      xData
    };
  }

  // 获取随机值
  getRandomValue(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
  }

  // 停止发送数据
  stop() {
    if (this.mockDataInterval) {
      clearInterval(this.mockDataInterval);
    }
    console.log('Mock WebSocket服务器已停止');
  }
}

// 创建并启动mock服务器
const mockServer = new MockWebSocketServer();
mockServer.start();

// 模拟WebSocket服务器处理连接的逻辑
function setupMockWebSocketServer() {
  // 在实际项目中，这将是一个真正的WebSocket服务器
  // 这里只是模拟如何处理连接和发送数据
  console.log('WebSocket服务器已准备就绪');

  // 模拟处理连接
  setTimeout(() => {
    console.log('等待客户端连接...');
  }, 1000);
}

// 如果直接运行此文件，则启动mock服务器
if (typeof window === 'undefined') {
  setupMockWebSocketServer();
}

// 导出mock服务器类，供其他模块使用
if (typeof module !== 'undefined' && module.exports) {
  module.exports = { MockWebSocketServer };
}
